Fix packaged SciPy quick-start resources and add artifact release gates - #5
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #4
External reproduction
PhaseProbe 0.2.0 was installed from PyPI into a fresh CPython 3.12 environment. From an unrelated working directory containing spaces, with
PYTHONPATHunset andphaseprobeimported fromsite-packages, this documented command exited 2 because the relative file was absent:phaseprobe perturb --config examples/scipy/lorenz.jsonRoot cause
The four SciPy JSON configurations lived in the repository-level
examples/scipy/tree. Hatchling's wheel target packagessrc/phaseprobe, so the wheel omitted that tree. The sdist contained it only as source material; installing the sdist built a wheel that omitted it again. Checkout-root tests and CI masked the installed-artifact failure.Implementation
phaseprobe/data/examplesand load them withimportlib.resourcesthrough--example scipy-*names.The original Issue #4 command now resolves to
scipy-lorenzwhen its relative file is absent. The preferred installed-safe form is:phaseprobe perturb --example scipy-lorenzArtifact-level verification design
The gate builds the wheel and sdist, inspects their members and metadata, creates fresh installations outside the checkout with
PYTHONPATHremoved, and exercises the wheel, sdist, and dependency-free base wheel. The installed smoke loads every built-in, runs all four SciPy examples through the real CLI, reproduces the former command, checks local-file precedence plus separator/case/fuzzy behavior, runs scan/replay/generated pytest, and runspip check.Local verification
Windows, CPython 3.12.13:
site-packagesFINITE-TIME TRAJECTORY DIVERGENCE FOUNDCHECK POLICY PASSEDREPLAY VERIFIEDpip check: no broken requirementsNo solver method, tolerance, threshold, search bound, numerical default, replay semantic, or scientific claim changed.
PhaseProbe 0.2.1 has not been published to PyPI or TestPyPI. The remaining remote-CI requirement is now satisfied: all 14 jobs passed across Linux and Windows, Python 3.10/3.12/3.14, core and SciPy source tests, package/hygiene, and Windows installed-artifact verification.